function Curry(fn) {
    return function f(...arg) {
        if (arg.length == fn.length) {
            return fn(...arg)
        } else {
            return function (...arg2) {
                return f.apply(this, arg.concat(arg2))
            }
        }
    }
}


function Compose(...fns) {
    return function (v) {
        return fns.reduce((acc, fn) => {
            return fn(acc)
        },v)
    }
}